Skip to content

chore(build) Add support for building with RHEL 9+ / Fedora 38+ / tested on Fedora 44#9728

Open
rahst12 wants to merge 3 commits into
dgraph-io:mainfrom
rahst12:fedora-44-make-support
Open

chore(build) Add support for building with RHEL 9+ / Fedora 38+ / tested on Fedora 44#9728
rahst12 wants to merge 3 commits into
dgraph-io:mainfrom
rahst12:fedora-44-make-support

Conversation

@rahst12

@rahst12 rahst12 commented May 30, 2026

Copy link
Copy Markdown

Description

Podman / Fedora 44 / RHEL 9+ support for make test

NOTE: RedHat 8 was End of Life May 2024.

Docker CE is no longer installable or functional on Fedora 38+ and RHEL 9+ from the official
Docker repository. Podman (with podman-docker and podman-compose) is the supported
replacement on those platforms. This release makes the entire test infrastructure
runtime-agnostic so that make test works with either Docker or Podman transparently.

Changes by area:

  • testutil/runtime.go (new): central runtime detection; auto-detects whether Docker or
    Podman is in use (including podman-docker shims), sets DOCKER_HOST to the Podman socket
    so the Docker SDK can communicate with it, and exposes ContainerRuntime() and
    ContainerComposeCmdPrefix() helpers used everywhere else

  • t/t.go and testutil/bulk.go: all hardcoded docker compose --compatibility
    invocations replaced with ContainerComposeCmdPrefix(); all docker logs, docker cp, and
    docker exec calls replaced with ContainerRuntime()

  • contrib/Dockerfile: pre-creates all /data/zero*, /data/alpha*, /data/dg1, and
    /data/dg0.1 directories; Podman's crun OCI runtime does not auto-create a container's
    working_dir at startup (unlike Docker's runc), which left containers stuck in "Created"
    state

  • t/Makefile: new install-deps-docker-linux-dnf target installs
    podman podman-docker podman-compose and enables the Podman socket instead of attempting the
    broken Docker CE install path on Fedora/RHEL

  • t/scripts/check-deps-docker.sh: rewritten to detect and validate Podman on
    dnf-based systems instead of requiring Docker CE

  • t/scripts/check-docker-available-memory.sh: reads /proc/meminfo directly on Linux
    (works for both Docker and Podman) rather than calling docker info

  • Makefile (root): new $(DOCKER) variable falls back to podman when docker is
    absent, used for image build targets

  • Fixed

    • fix(build): detect jemalloc under /usr/lib64 so a dnf-installed jemalloc-devel is found on
      Fedora/RHEL multilib systems
    • fix(build): compile the bundled jemalloc 5.3.1 with --disable-cxx to avoid the
      std::__throw_bad_alloc build failure on GCC 13+ (e.g. Fedora 44 / GCC 15); dgraph only links
      jemalloc's C API, so the C++ layer is not needed
    • fix(build): chain the jemalloc build recipe with && (was ;) so a failed compile no longer
      falls through to make install, and clear any stale /tmp/jemalloc-temp before rebuilding
    • fix(test): add the Docker CE repo via a downloaded .repo file instead of
      dnf config-manager --add-repo, which was removed in DNF5 (Fedora 41+) and broke
      make setup on Fedora
  • Added

    • test: add contrib/smoke-test.sh to bring up a local zero+alpha and verify
      schema/mutation/query against a freshly built binary
  • Changed

    • build: linux-dependency now auto-detects the package manager (apt/dnf/pacman) and installs the
      C/C++ toolchain + protobuf-compiler, so build prerequisites work on Fedora/RHEL and Arch in
      addition to Debian/Ubuntu
  • Docs

    • docs(contributing): document building Dgraph on Fedora/RHEL

Checklist

  • The PR title follows the
    Conventional Commits syntax, leading
    with fix:, feat:, chore:, ci:, etc.
  • Code compiles correctly and linting (via trunk) passes locally
  • Tests added for new functionality, or regression tests for bug fixes added as applicable
  • [-] For public APIs, new features, etc., a PR on the
    docs repo staged and linked here. This process can
    be simplified by going to the public docs site and clicking the
    "Edit this page" button at the bottom of page(s) relevant to your changes. Ensure that you
    indicate in the PR that this is an unreleased feature so that it does not get merged into
    the main docs prematurely.

Instructions

  • The PR title should follow the
    Conventional Commits syntax, leading
    with fix:, feat:, chore:, ci:, etc. Ensure any breaking changes are appropriately marked
    with a !. For instance, feat(dql)!: Remove the foobar func would indicate that this is a
    breaking change to the DQL syntax.
  • The description should briefly explain what the PR is about. In the case of a bugfix, describe or
    link to the bug.
  • In the checklist section, check the boxes in that are applicable, using [x] syntax.
    • If not applicable, remove the entire line. Only leave the box unchecked if you intend to come
      back and check the box later.
  • Delete the Instructions line and everything below it, to indicate you have read and are
    following these instructions. 🙂

Thank you for your contribution to Dgraph!

@rahst12 rahst12 requested a review from a team as a code owner May 30, 2026 04:24
@rahst12

rahst12 commented Jun 13, 2026

Copy link
Copy Markdown
Author

I'm looking for feedback on the fedora 44 supports. What's needed to get this going?

@rahst12 rahst12 changed the title chore(build) Add support for building with Fedora 44 chore(build) Add support for building with RHEL 9 / Fedora 38+ / tested on Fedora 44 Jun 20, 2026
@rahst12 rahst12 changed the title chore(build) Add support for building with RHEL 9 / Fedora 38+ / tested on Fedora 44 chore(build) Add support for building with RHEL 9+ / Fedora 38+ / tested on Fedora 44 Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant